﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebLibs;
using MDF.DataHelper.BussinessLogic.UsersBL;

namespace TGVR.Manager.UserControls.Template.SystemUser
{
    public partial class LoginForm : TGVRUserControlBase
    {
        #region data members
        protected MessageBox.MessageBox LoginMsgBox
        {
            get
            {
                return Page.FindControl("MessageBox1") as MessageBox.MessageBox;
            }
        }

        public string LoginRequired = "Vui lòng nhập mật khẩu chính xác vào ô trống bên trên, sau đó nhập các ký tự mà bạn nhìn thấy trong hình dưới đây vào ô trống bên cạnh để xác nhận";
        public string ChangePassPage = "";
        public string VerifyImagePath = "VerifyImage.ashx";

        private bool IsDecrypt = true;
        private string StoreProcName = "System_User_Login";
        private string FieldNameFunction = "FunctionID";
        private string ListFieldAttributes = "FullName,Function,FunctionID,Departmentname,DepartmentID,Address,PhoneNumber,ReviewLevelID,ImagePath";
        private string PriLink
        {
            get { return ViewState["PriLink"] != null ? ViewState["PriLink"].ToString() : ""; }
            set
            {
                ViewState["PriLink"] = value;
            }
        }
        private int LoginCount
        {
            get
            {
                if (Session["LoginCount"] != null)
                    return Convert.ToInt32(Session["LoginCount"]);
                else
                    return 0;
            }
            set
            {
                Session["LoginCount"] = value;
            }
        }
        private int MaxLoginTime
        {
            get { return Convert.ToInt32(Globals.GetConfig(("System_MaxWrongLoginTimes"))); }
        }

        private int CaptchaCount
        {
            get
            {
                if (Session["CaptchaCount"] != null)
                    return Convert.ToInt32(Session["CaptchaCount"]);
                else
                    return 0;
            }
            set
            {
                Session["CaptchaCount"] = value;
            }
        }

        private int CaptchaTime
        {
            get
            {
                return Convert.ToInt32(Globals.GetConfig(("System_MaxWrongLoginTimes")));
            }
        }
        #endregion

        #region event handlers
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (this.Request.UrlReferrer != null)
                    PriLink = this.Request.UrlReferrer.AbsoluteUri;
            }
        }

        protected void btnLogin_Click(object sender, EventArgs e)
        {
            if (this.Request.UrlReferrer == (Uri)null)
                return;
            if (!CheckValidFrom())
            {
                LoginMsgBox.ShowInfo("Nhập tài khoản đăng nhập hoặc mật khẩu");
                return;
            }
            MDF.DataHelper.BussinessObject.UsersBO.UserProfile user = UserProfileBUS.Current.Login(txtUserName.Text, txtPassword.Text);

            if (user != null && user.IsConfirmed)
            {
                HttpContext.Current.Session["user"] = user;
                if (!string.IsNullOrEmpty(PriLink) && PriLink.ToLower().IndexOf("login") == -1)
                    Response.Redirect(PriLink);
                else
                    Response.Redirect("/Default.aspx");
            }
            else
            {
                if (user != null && !user.IsConfirmed)
                {
                    LoginMsgBox.ShowWarning("Tài khoản của bạn chưa kích hoạt, vui lòng liên hệ TGVR để kích hoạt.");
                }
                else
                    LoginMsgBox.ShowError("Đăng nhập thất bại!");
            }
        }
        #endregion

        #region functions
        private bool CheckValidFrom()
        {
            if (txtUserName.Text == string.Empty || txtPassword.Text == string.Empty)
                return false;
            else
                return true;
        }

        private bool CheckUserLock(string userName)
        {
            IData objData = new IData();
            try
            {
                objData.Connect();
                objData.CreateNewStoredProcedure("System_User_CheckLockUser");
                objData.AddParameter("@username", userName);
                objData.AddParameter("@unlockminute", Globals.GetConfig("System_UnlockAccountMinutes"));
                return Convert.ToInt32(objData.ExecStoreToString()) == 1;
            }
            catch (Exception objEx)
            {
                return false;
            }
            finally
            {
                objData.DeConnect();
            }
        }

        protected void LockUser(bool bIsLock)
        {
            IData objData = new IData();
            try
            {
                objData.Connect();
                objData.CreateNewStoredProcedure("System_User_LockUser");
                objData.AddParameter("@username", txtUserName.Text.Trim());
                objData.AddParameter("@IsLocked", bIsLock);
                objData.ExecNonQuery();
            }
            catch (Exception objEx)
            {
            }
            finally
            {
                objData.DeConnect();
            }
        }
        #endregion


    }
}